package comunicaciones

import java.util.Date
import cliente.empresa.Cliente


class LlamadaLocal(num : Int, duracion : Int ) extends Comunicacion{
		val tipo = "Local"
		var numDest = num
		
//----------------------------------Metodos----------------------------------------------------------
		  
 
	   //*************************
	   // Calcula el precio a una llamada sin planes
	   //*************************		   	  
	def precioParaSinPlan(): Double ={
	    var total = 0.0
	    if(this.duracion > 60){
	      total = 0.60 + calcularPrecioEnSegs(this.duracion - 60)
	      total
	    }
	    else{
	      0.60
	    }
	}
	
		// Auxiliar de precioParaSinPlan(): Double
	def calcularPrecioEnSegs(duracion : Int): Double ={
	   if(duracion < 10){
	     0.0
	   }
	   else{
	     0.10 + calcularPrecioEnSegs(duracion - 10)
	   }
	}
	
	   //*************************
	   // Calcula el precio a una llamada con plan numeros amigos
	   //*************************	
	def precioParaConPlanAmigos(numeros :List[Int]): Double ={
	  if(numeros.contains(this.numDest)){
	    0.0
	  }else{
	    this.precioParaSinPlan()
	  }
	}
	
	   //*************************
	   // Calcula el precio a una llamada con plan ciudades amigas
	   //*************************	
	def precioParaConPlanCiudades(ciudad :String): Double={
	    this.precioParaSinPlan()
	}
	
	   //*************************
	   // Calcula el precio a una llamada con plan hablate todo
	   //*************************	
	
	def precioParaHablateTodo(): Double = {
	  if(this.esDeFinDeSemana()){
	    if(this.duracion <= 300){
	       this.precioParaSinPlan()
	    }else{
	       (new LlamadaLocal(0,300)).precioParaSinPlan()
	    }
	  }else{
	    this.precioParaSinPlan()
	  }
	}
	

	def duracion() = this.duracion
	
	def esLarga() = this.duracion > 300

//----------------------------------MetodosEj3----------------------------------------------------------
	   //*************************
	   // Calcula el precio a una llamada local de un cliente segun su  plan
	   //*************************	
   def precio(cliente:Cliente): Double ={
	   cliente.plan.calcularPrecioSegunPlan(this)
	}

}